
        <html>
			<head>
			     <title>工控安全入门分析 - 路人甲</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/8594">http://drops.wooyun.org/tips/8594</a></h1>
				
      <p>
        <h1>0x00写在前面</h1>

<hr />

<p>工业4.0，物联网趋势化，工控安全实战化。安全从业保持敏感，本篇以科普角度对工控安全做入门分析，大牛绕过，不喜轻喷。</p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107543925392pic15.png" alt="" /></p>

<!--more-->

<h1>0x01专业术语</h1>

<hr />

<p><code>SCADA</code>：数据采集与监视控制系统</p>

<p><code>ICS</code>：工业控制系统</p>

<p><code>DCS</code>：分布式控制系统/集散控制系统</p>

<p><code>PCS</code>：过程控制系统</p>

<p><code>ESD</code>：应急停车系统</p>

<p><code>PLC</code>：可编程序控制器(Programmable Logic Controller)</p>

<p><code>RTU</code>：远程终端控制系统</p>

<p><code>IED</code>：智能监测单元</p>

<p><code>HMI</code>：人机界面(Human Machine Interface)</p>

<p><code>MIS</code>：管理信息系统(Management Information System)</p>

<p><code>SIS</code>： 生产过程自动化监控和管理系统（Supervisory Information System）</p>

<p><code>MES</code>：制造执行管理系统</p>

<h1>0x02协议端口及测试脚本</h1>

<hr />

<ul>
<li><p><strong>协议科普</strong></p>

<ul>
<li><p><strong>Modbus</strong></p>

<p>MODBUS协议定义了一个与基础通信层无关的简单协议数据单元（PDU）。特定总线或网络上的MODBUS协议映射能够在应用数据单元（ADU）上引入一些附加域。</p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107544572757pic22.png" alt="" /></p>

<p>安全问题：</p>

<ul>
<li>缺乏认证：仅需要使用一个合法的Modbus地址和合法的功能码即可以建立一个Modbus会话</li>
<li>缺乏授权：没有基于角色的访问控制机制， 任意用户可以执行任意的功能。</li>
<li>缺乏加密：地址和命令明文传输， 可以很容易地捕获和解析</li>
</ul></li>
<li><p><strong>PROFIBUS</strong></p>

<p>一种用于工厂自动化车间级监控和现场设备层数据通信与控制的现场总线技术，可实现现场设备层到车间级监控的分散式数字控制和现场通信网络</p></li>
<li><p><strong>DNP3</strong></p>

<p>DNP(Distributed Network Protocol,分布式网络协议)是一种应用于自动化组件之间的通讯协议，常见于电力、水处理等行业。</p>

<p>简化OSI模型，只包含了物理层，数据层与应用层的体系结构（EPA）。</p>

<p>SCADA可以使用DNP协议与主站、RTU、及IED进行通讯。</p></li>
<li><p><strong>ICCP</strong></p>

<p><a href="http://www.doc88.com/p-0127254402976.html">电力控制中心</a>通讯协议。</p></li>
<li><p><strong>OPC</strong></p>

<p>过程控制的OLE （OLE for Process Control）。</p>

<p>OPC包括一整套接口、属性和方法的标准集，用于过程控制和制造业自动化系统。</p></li>
<li><p><strong>BACnet</strong></p>

<p>楼宇自动控制网络数据通讯协议（A Data Communication Protocol for Building Automation and Control Networks）。</p>

<p>BACnet 协议是为计算机控制采暖、制冷、空调HVAC系统和其他建筑物设备系统定义服务和协议</p></li>
<li><p><strong>CIP</strong></p>

<p>通用工业协议，被deviceNet、ControINet、EtherNet/IP三种网络所采用。</p></li>
<li><p><strong>Siemens S7</strong></p>

<p>属于第7层的协议，用于西门子设备之间进行交换数据，通过TSAP，可加载MPI,DP,以太网等不同物理结构总线或网络上，PLC一般可以通过封装好的通讯功能块实现。</p></li>
<li><p><strong>其他工控协议</strong></p>

<p>IEC 60870-5-104、EtherNet/IP、Tridium Niagara Fox、Crimson V3、OMRON FINS、PCWorx、ProConOs、MELSEC-Q。按需求自行查阅资料。</p></li>
</ul></li>
<li><p><strong>信息探测</strong></p>

<ul>
<li><p><strong>协议测试脚本</strong></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107544851182pic32.png" alt="" /></p>

<p><em>PS：简要测试，大量脚本自行测试。</em></p></li>
<li><p><strong>相关搜索引擎</strong></p>

<p>Shodan搜索</p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107545396665pic41.png" alt="" /></p>

<p><em>PS：Shodan搜索引擎介绍 <code>http://drops.wooyun.org/tips/2469</code></em></p>

<p>Zoomeye搜索</p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107545732819pic52.png" alt="" /></p>

<p><em>PS：敏感信息，你懂得。</em></p></li>
<li><p><strong>Ethernet/IP 44818</strong></p>

<p><code>nmap -p 44818 --script enip-enumerate.nse  85.132.179.*</code></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107550062851pic62.png" alt="" /></p></li>
<li><p><strong>Modbus 502</strong></p>

<p><code>nmap --script modicon-info.nse -Pn -p 502 -sV 91.83.43.*</code></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107550422138pic71.png" alt="" /></p></li>
<li><p><strong>IEC 61870-5-101/104 2404</strong></p>

<p><code>nmap -Pn -n -d --script iec-identify.nse  --script-args=iec-identify -p 2404 80.34.253.*</code></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107550864441pic82.png" alt="" /></p></li>
<li><p><strong>Siemens S7 102</strong></p>

<p><code>nmap -p 102 --script s7-enumerate -sV 140.207.152.*</code></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107551121974pic91.png" alt="" /></p>

<p><code>nmap -d --script mms-identify.nse  --script-args='mms-identify.timeout=500' -p 102  IP</code></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107551634424pic101.png" alt="" /></p></li>
<li><p><strong>Tridium Niagara Fox 1911</strong></p>

<p><code>nmap -p 1911 --script fox-info 99.55.238.*</code></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107552153232pic111.png" alt="" /></p></li>
<li><p><strong>意义何在</strong></p>

<p>上述NSE脚本意义：</p>

<ol>
<li>定位工控系统及协议模块。</li>
<li>收集目标工控的信息，如版本、内网IP、模块、硬件信息等。</li>
<li>结合对应的NSE脚本进一步拓展，例如自定义空间搜素引擎。</li>
</ol></li>
</ul></li>
<li><p><strong>脚本资源</strong></p>

<ul>
<li><p><strong>Github测试脚本</strong></p>

<p><a href="https://github.com/atimorin/scada-tools">https://github.com/atimorin/scada-tools</a> <a href="https://github.com/atimorin/PoC2013">https://github.com/atimorin/PoC2013</a> <a href="https://github.com/drainware/scada-tools">https://github.com/drainware/scada-tools</a> <a href="https://github.com/drainware/nmap-scada">https://github.com/drainware/nmap-scada</a></p></li>
<li><p><strong>Exploit-db测试脚本</strong></p>

<p><a href="https://www.exploit-db.com/exploits/19833/">https://www.exploit-db.com/exploits/19833/</a> <a href="https://www.exploit-db.com/exploits/19832/">https://www.exploit-db.com/exploits/19832/</a> <a href="https://www.exploit-db.com/exploits/19831/">https://www.exploit-db.com/exploits/19831/</a> <a href="https://www.exploit-db.com/search/?action=search&amp;description=scada&amp;e_author=">https://www.exploit-db.com/search/?action=search&amp;description=scada&amp;e_author=</a></p></li>
</ul></li>
</ul>

<h1>0x03乌云工控漏洞的分析</h1>

<hr />

<ul>
<li><p><strong>工控相关漏洞分析</strong></p>

<p>针对乌云主站的漏洞进行关键字搜索：工控(31)、SCADA(15)、Modbus(9)、PLC并进一步整合得到如下列表。</p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107552526506pic121.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107553092937pic131.png" alt="" /></p>

<p>在以上的漏洞列表中，可以得出如下结论：</p>

<ol>
<li>乌云工控漏洞的案例中，绝大多起因是弱口令(弱口令最多的是123456，其次是admin)、注入类漏洞。</li>
<li>能够挖出工控的精华漏洞的人也是特定的那几位，且在Kcon2015也有过演讲。</li>
<li>挖掘此类漏洞主要解决两个问题 

<ol>
<li>如何找到工控相关的系统和地址</li>
<li>Getshell后，基于工控知识如何操控系统</li>
</ol></li>
<li>根据漏洞中的细节可以进一步的复测和拓展，进而为工控系统的漏洞挖掘提供非线性思路。 

<ol>
<li>结合GHDB关键字的搜素：例如inurl:SCADA……</li>
<li>链接地址含SCADA、Modbus等协议的关键字……</li>
<li>其他KEY：MIS、SIS、DCS、PLC、ICS、监控系统……</li>
<li>相关公司：南京科远、金风科技、天能集团、国电南瑞、华润燃气、积成电子、重庆三峰、东方电子……</li>
<li>至于利用以上四点去做什么，呵呵…</li>
</ol></li>
</ol></li>
<li><p><strong>工控精华漏洞分析</strong></p>

<p>乌云工控相关的精华漏洞如下7个，在思路亮点中分析了漏洞的核心，同样也可能是获得打雷精华的理由。几乎共同点均是操控了对应的工控系统。</p>

<p><img src="http://static.wooyun.org//drops/20150911/2015091107553563835pic141.png" alt="" /></p></li>
</ul>

<h1>0x04参考资源</h1>

<hr />

<ul>
<li><p>工控专题</p>

<ul>
<li>ZoomEye工控专题： <a href="http://ics.zoomeye.org/">http://ics.zoomeye.org/</a></li>
<li>Shodan工控专题：<a href="https://www.shodan.io/report/l7VjfVKc">https://www.shodan.io/report/l7VjfVKc</a></li>
</ul></li>
<li><p>牛人分享</p>

<ul>
<li>Z-0ne专注于工控安全攻防技术研究 ：<a href="http://plcscan.org/blog/">http://plcscan.org/blog/</a></li>
<li>网络空间工控设备的发现与入侵：<a href="https://github.com/evilcos/papers">https://github.com/evilcos/papers</a></li>
<li>工控安全攻防演练场景实现分享（轨道交通）：<a href="http://zone.wooyun.org/content/14428">http://zone.wooyun.org/content/14428</a></li>
<li>工业网络渗透，直击工控安全的罩门(zph，暂无资料)</li>
<li>工控系统安全威胁与应对探索(Kimon) </li>
<li>Exploit PLC on the internet（Z-0ne）：<a href="https://github.com/knownsec/KCon/tree/master/KCon%202015">https://github.com/knownsec/KCon/tree/master/KCon%202015</a></li>
</ul></li>
<li><p>其他参考</p>

<ul>
<li>Google &amp; baidu</li>
<li>协议安全分析专业公司——科诺康：<a href="http://www.codenomicon.com/cn/">http://www.codenomicon.com/cn/</a></li>
<li>Modbus通讯协议学习 - 认识篇：<a href="http://www.cnblogs.com/luomingui/archive/2013/06/14/Modbus.html">http://www.cnblogs.com/luomingui/archive/2013/06/14/Modbus.html</a></li>
</ul></li>
</ul>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          